/*
 * @Author: xiaoqi
 * @Date: 2024-09-02 22:45:09
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2024-09-06 21:59:12
 * @Description: 请填写简介
 */
#include "user_gpio.h"

#include "air001_ll_Core_Board.h"
#include "air001xx_ll_rcc.h"
#include "air001xx_ll_bus.h"
#include "air001xx_ll_system.h"
#include "air001xx_ll_cortex.h"
#include "air001xx_ll_utils.h"
#include "air001xx_ll_pwr.h"
#include "air001xx_ll_gpio.h"
#include "air001xx_ll_lptim.h"


/**
  * @brief  GPIO配置函数
  * @param  无
  * @retval 无
  */
void APP_GpioConfig(void)
{
  /* 使能时钟 */
  LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
  LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOB);
  

  LL_GPIO_SetPinMode      (GPIOA, LL_GPIO_PIN_0, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_0, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOA, LL_GPIO_PIN_0, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOA, LL_GPIO_PIN_0, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOA, LL_GPIO_PIN_1, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_1, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOA, LL_GPIO_PIN_1, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOA, LL_GPIO_PIN_1, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOA, LL_GPIO_PIN_4, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_4, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOA, LL_GPIO_PIN_4, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOA, LL_GPIO_PIN_4, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOA, LL_GPIO_PIN_5, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_5, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOA, LL_GPIO_PIN_5, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOA, LL_GPIO_PIN_5, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOA, LL_GPIO_PIN_6, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_6, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOA, LL_GPIO_PIN_6, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOA, LL_GPIO_PIN_6, LL_GPIO_PULL_DOWN);             //下拉}

  LL_GPIO_SetPinMode      (GPIOA, LL_GPIO_PIN_7, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_7, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOA, LL_GPIO_PIN_7, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOA, LL_GPIO_PIN_7, LL_GPIO_PULL_DOWN);             //下拉


  LL_GPIO_SetPinMode      (GPIOB, LL_GPIO_PIN_0, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOB, LL_GPIO_PIN_0, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOB, LL_GPIO_PIN_0, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOB, LL_GPIO_PIN_0, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOB, LL_GPIO_PIN_1, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOB, LL_GPIO_PIN_1, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOB, LL_GPIO_PIN_1, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOB, LL_GPIO_PIN_1, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOB, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOB, LL_GPIO_PIN_2, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOB, LL_GPIO_PIN_2, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOB, LL_GPIO_PIN_2, LL_GPIO_PULL_DOWN);             //下拉

  LL_GPIO_SetPinMode      (GPIOB, LL_GPIO_PIN_3, LL_GPIO_MODE_OUTPUT);           //输出
  LL_GPIO_SetPinOutputType(GPIOB, LL_GPIO_PIN_3, LL_GPIO_OUTPUT_PUSHPULL);       //推挽输出
  LL_GPIO_SetPinSpeed     (GPIOB, LL_GPIO_PIN_3, LL_GPIO_SPEED_FREQ_VERY_HIGH);  //最高速度
  LL_GPIO_SetPinPull      (GPIOB, LL_GPIO_PIN_3, LL_GPIO_PULL_DOWN);             //下拉

}


void GPIO_set(uint8_t ch,uint8_t mod)
{

  switch (ch)
  {
  case 1:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_1);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_1);
    }
    
    break;
  
  case 2:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_2);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_2);
    }
    
    break;

  case 3:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_0);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_0);
    }
    
    break;


  case 4:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_7);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_7);
    }
    
    break;

  case 5:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_4);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_4);
    }
    
    break;

  case 6:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_1);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_1);
    }
    
    break;

  case 7:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_0);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_0);
    }
    
    break;

  case 8:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_3);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_3);
    }
    
    break;

  case 9:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_6);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_6);
    }
    
    break;

  case 10:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_5);
    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_5);
    }
    
    break;



  case 100:

    if (mod == 0)
    {
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_1);
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_2);
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_0);
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_7);
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_4);

      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_1);
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_0);
      LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_3);
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_6);
      LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_5);

    }
    else
    {
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_1);
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_2);
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_0);
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_7);
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_4);

      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_1);
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_0);
      LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_3);
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_6);
      LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_5);

    }
    
    break;

  default:
    break;
  }



}


void GPIO_Toggle(uint8_t ch)
{

  switch (ch)
  {
  case 1:

    LL_GPIO_TogglePin(GPIOB, LL_GPIO_PIN_1);

    break;
  
  case 2:

    LL_GPIO_TogglePin(GPIOB, LL_GPIO_PIN_2);

    break;

  case 3:

    LL_GPIO_TogglePin(GPIOB, LL_GPIO_PIN_0);

    break;

  case 4:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_7);

    break;

  case 5:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_4);

    break;

  case 6:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_1);

    break;

  case 7:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_0);

    break;

  case 8:

    LL_GPIO_TogglePin(GPIOB, LL_GPIO_PIN_3);

    break;

  case 9:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_6);

    break;

  case 10:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_5);

    break;



  case 100:

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_1);
    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_0);
    LL_GPIO_TogglePin(GPIOB, LL_GPIO_PIN_3);
    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_6);
    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_5);
    break;


  default:
    break;
  }

}





























